home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 5 / The 640 Meg Shareware Studio CD-ROM Volume V (Data Express)(1994).ISO / amiga / tdemo2.lha / ProgrammersInfo / DoorCode.c < prev    next >
C/C++ Source or Header  |  1994-06-05  |  10KB  |  560 lines

  1. /* Tempest Door Code! */
  2.  
  3. //**********************
  4. //*****  Includes  *****
  5. //**********************
  6.  
  7. #include <proto/all.h>
  8. #include <exec/types.h>
  9. #include <time.h>
  10. #include <stdio.h>
  11. #include <ctype.h>
  12. #include <devices/timer.h>
  13. #include <devices/serial.h>
  14. #include <libraries/dos.h>
  15. #include <intuition/intuition.h>
  16. #include <exec/memory.h>
  17. #include <stdarg.h>
  18.  
  19. #include <string.h>
  20. #include <tempest/headers.h>
  21.  
  22. //************************
  23. //*****  ProtoTypes  *****
  24. //************************
  25.  
  26. int  DoorStart(TEXT *);
  27. int  DOORIO(VOID);
  28. VOID CloseStuff(VOID);
  29.  
  30.  
  31. VOID Activity(BYTE,TEXT *);
  32. VOID AlterTime(UWORD);
  33. int  CheckKey(VOID);
  34. int  CTRLC(VOID);
  35. int  CursorHotKey(VOID);
  36. VOID Editor(TEXT *,int);
  37. VOID GetPaths(TEXT *,int);
  38. VOID GetStr(TEXT *,int);
  39. VOID GetUserTime(TEXT *);
  40. int  GetValue(int);
  41. int  hotkey(TEXT *);
  42. VOID input(TEXT *,int);
  43. VOID inputAB(TEXT *,int);
  44. VOID LineInput(TEXT *,TEXT *,int);
  45. VOID LineInputAB(TEXT *,TEXT *,int);
  46. VOID LineInputHide(TEXT *,TEXT *,int);
  47. VOID LineInputHideAB(TEXT *,TEXT *,int);
  48. VOID MarkFile(TEXT *);
  49. VOID LoadSystemData(VOID);
  50. VOID LOG(TEXT *);
  51. VOID SLOG(TEXT *);
  52. VOID DEBUGLOG(TEXT *);
  53. VOID USERLOG(TEXT *);
  54. int  MORE(VOID);
  55. int  Pause(VOID);
  56. VOID pl(TEXT *);
  57. VOID pl(TEXT *,...);
  58. int  Random(int);
  59. VOID SetValue(int,int);
  60. VOID showfile(TEXT *);
  61. VOID UserTime(int);
  62. VOID WriteFile(TEXT *,TEXT *);
  63. VOID ZmodemDownload(TEXT *);
  64. VOID ZUpload(VOID);
  65.  
  66. //*********************
  67. //*****  Structs  *****
  68. //*********************
  69.  
  70.  struct MyMessage
  71.   {
  72.    struct Message Msg; // for Exec message routines
  73.    ULONG  Command;     // Command to be executed.
  74.  
  75.    TEXT   *text1,
  76.           *text2,
  77.           *text3;
  78.    int    Value1,
  79.           Value2;
  80.    ULONG  LongValue;
  81.    LONGBITS Flags;
  82.    int    carrier;
  83.    struct User       *User;
  84.    struct SystemData *SystemData;
  85.    struct NodeData   *NodeData;
  86.    struct Today      *Today;
  87.   };
  88.  
  89. struct MyMessage send;
  90.  
  91. struct MsgPort *MyPort = NULL;
  92. struct MyMessage *msg;
  93. struct User *User;
  94.  
  95. char MyName[60],st[60]; // Variables for Port names.
  96.  
  97.  
  98.  
  99. //************************
  100. //*****  Door Start  ***** // MUST BE INCLUDED IN ALL DOORS!
  101. //************************
  102.  
  103. int DoorStart(TEXT *node)
  104. {
  105.  struct MsgPort *HisPort;
  106.  send.carrier=0;
  107.  sprintf(st,"%s:TEMPEST_DOOR",node);
  108.  HisPort = FindPort(st);
  109.  if(HisPort==NULL) return (FALSE);
  110.  sprintf(MyName,"%s:DOOR_PORT",node);
  111.  MyPort = CreatePort(MyName,0L);
  112.  if(MyPort==NULL)
  113.   {
  114.    PutStr("Cant open port");
  115.    return(int)FALSE;
  116.   }
  117.  DOORIO();
  118.  User=*&send.User;
  119.  return (int)TRUE;
  120. }
  121.  
  122. //********************
  123. //*****  DoorIO  ***** // MUST BE INCLUDED IN ALL DOORS!
  124. //********************
  125.  
  126. int DOORIO(VOID)
  127. {
  128.  struct MsgPort *HisPort;
  129.  if(send.carrier) return(0);
  130.  HisPort = FindPort(st);
  131.  if(HisPort!=NULL)
  132.   {
  133.    send.Msg.mn_Node.ln_Type = NT_MESSAGE;
  134.    send.Msg.mn_Length = sizeof(send);
  135.    send.Msg.mn_ReplyPort = MyPort;
  136.    send.carrier=0;
  137.    PutMsg((struct MsgPort *)HisPort,(struct Message *)&send);
  138.    Wait(1 << MyPort->mp_SigBit);
  139.    GetMsg(MyPort);
  140.    if(send.carrier) CloseStuff();
  141.    return(1);
  142.   }
  143.  return(0);
  144. }
  145.  
  146. //*************************
  147. //*****  Close Stuff  ***** // MUST BE INCLUDED IN ALL DOORS!
  148. //*************************
  149.  
  150. VOID CloseStuff(VOID)
  151. {
  152.  send.Command=999;
  153.  DOORIO();
  154.  while(msg=(struct MyMessage *)GetMsg(MyPort)) ReplyMsg((struct Message *)msg);
  155.  if(MyPort) DeletePort(MyPort);
  156.  exit(0);
  157. }
  158.  
  159.  
  160.  
  161.  
  162. //**********************
  163. //*****  Activity  ***** // Command 44
  164. //**********************
  165.  
  166. VOID Activity(BYTE act,TEXT *s)
  167. {
  168.  send.Command=44;
  169.  send.Value1=act;
  170.  send.text1=s;
  171.  DOORIO();
  172. }
  173.  
  174. //***********************
  175. //*****  AlterTime  ***** // Command 41
  176. //***********************
  177.  
  178. VOID AlterTime(UWORD opt)
  179. {
  180.  send.Command=41;
  181.  send.Value1=(int)opt;
  182.  DOORIO();
  183. }
  184.  
  185. //***********************
  186. //*****  Check Key  ***** // Command 15
  187. //***********************
  188.  
  189. int CheckKey(VOID)
  190. {
  191.  send.Command=15;
  192.  send.Value2=0;
  193.  DOORIO();
  194.  return(send.Value2);
  195. }
  196.  
  197. //*************************
  198. //*****  CTRLC CHECK  ***** // Command 10
  199. //*************************
  200.  
  201. int CTRLC(VOID)
  202. {
  203.  send.Command=10;
  204.  DOORIO();
  205.  return(send.Value1);
  206. }
  207.  
  208. //***************************
  209. //*****  Cursor HotKey  ***** // Command 17
  210. //***************************
  211.  
  212. int CursorHotKey(VOID)
  213. {
  214.  send.Command=17;
  215.  DOORIO();
  216.  return(send.Value1);
  217. }
  218.  
  219. //********************
  220. //*****  Editor  ***** // Command 73
  221. //********************
  222.  
  223. VOID Editor(TEXT *Filename,int maxlength)
  224. {
  225.  send.Command=73;
  226.  send.Value1=maxlength;
  227.  send.text1=Filename;
  228.  DOORIO();
  229. }
  230.  
  231. //***********************
  232. //*****  Get Paths  ***** // Command 30
  233. //***********************
  234.  
  235. VOID GetPaths(TEXT *s,int opt)
  236. {
  237.  send.Command=30;
  238.  send.Value1=opt;
  239.  strcpy(s,NULL);
  240.  send.text1=s;
  241.  DOORIO();
  242. }
  243.  
  244. //*********************************
  245. //*****  GetStr (Get String)  ***** // Command 33
  246. //*********************************
  247.  
  248. VOID GetStr(TEXT *s,int opt)
  249. {
  250.  send.Command=33;
  251.  send.Value1=opt;
  252.  strcpy(s,NULL);
  253.  send.text1=s;
  254.  DOORIO();
  255. }
  256.  
  257. //***************************
  258. //*****  Get User Time  ***** // Command 31
  259. //***************************
  260.  
  261. VOID GetUserTime(TEXT *s)
  262. {
  263.  send.Command=31;
  264.  send.text1=s;
  265.  DOORIO();
  266. }
  267.  
  268. //***********************
  269. //*****  Get Value  ***** // Command 34
  270. //***********************
  271.  
  272. int GetValue(int opt)
  273. {
  274.  send.Command=34;
  275.  send.Value1=opt;
  276.  DOORIO();
  277.  return(send.Value2);
  278. }
  279.  
  280. //*********************
  281. //*****  Hot Key  ***** // Command 16
  282. //*********************
  283.  
  284. int hotkey(TEXT *character)
  285. {
  286.  send.Command=16;
  287.  send.text1=character;
  288.  DOORIO();
  289.  return((int)character[0]);
  290. }
  291.  
  292. //*******************
  293. //*****  Input  ***** // Command 20
  294. //*******************
  295.  
  296. VOID input(TEXT *mstring,int len)
  297. {
  298.  send.Command=20;
  299.  send.Value1=len;
  300.  send.text1 =mstring;
  301.  DOORIO();
  302. }
  303.  
  304. //****************************
  305. //*****  Input Ansi Bar  ***** // Command 21
  306. //****************************
  307.  
  308. VOID inputAB(TEXT *mstring,int len)
  309. {
  310.  send.Command=21;
  311.  send.Value1=len;
  312.  send.text1 =mstring;
  313.  DOORIO();
  314. }
  315.  
  316. //************************
  317. //*****  Line Input  ***** // Command 22
  318. //************************
  319.  
  320. VOID LineInput(TEXT *ostring,TEXT *mstring,int len)
  321. {
  322.  send.Command=22;
  323.  send.Value1=len;
  324.  send.text1=mstring;
  325.  send.text2=ostring;
  326.  DOORIO();
  327. }
  328.  
  329. //********************************
  330. //*****  Line Input Ansi Bar ***** // Command 23
  331. //********************************
  332.  
  333. VOID LineInputAB(TEXT *ostring,TEXT *mstring,int len)
  334. {
  335.  send.Command=23;
  336.  send.Value1=len;
  337.  send.text1=mstring;
  338.  send.text2=ostring;
  339.  DOORIO();
  340. }
  341.  
  342. //*********************************
  343. //*****  Line Input (Hidden)  ***** // Command 24
  344. //*********************************
  345.  
  346. VOID LineInputHide(TEXT *oldstring,TEXT *newstring,int len)
  347. {
  348.  send.Command=24;
  349.  send.Value1=len;
  350.  send.text1=newstring;
  351.  send.text2=oldstring;
  352.  DOORIO();
  353. }
  354.  
  355. //*****************************************
  356. //*****  Line Input (Hidden) Ansi Bar ***** // Command 25
  357. //*****************************************
  358.  
  359. VOID LineInputHideAB(TEXT *oldstring,TEXT *newstring,int len)
  360. {
  361.  send.Command=25;
  362.  send.Value1=len;
  363.  send.text1=newstring;
  364.  send.text2=oldstring;
  365.  DOORIO();
  366. }
  367.  
  368. //******************************
  369. //*****  Load System Data  ***** // Command 74
  370. //******************************
  371.  
  372. VOID LoadSystemData(VOID)
  373. {
  374.  send.Command=74;
  375.  DOORIO();
  376. }
  377.  
  378. //********************************
  379. //*****  LOG (Write to Log)  ***** // Command 60
  380. //********************************
  381.  
  382. VOID LOG(TEXT *outstring)
  383. {
  384.  send.Command=60;
  385.  send.text1=outstring;
  386.  DOORIO();
  387. }
  388.  
  389. //***************************************
  390. //*****  SLOG (Write to Sysop Log)  ***** // Command 61
  391. //***************************************
  392.  
  393. VOID SLOG(TEXT *outstring)
  394. {
  395.  send.Command=61;
  396.  send.text1=outstring;
  397.  DOORIO();
  398. }
  399.  
  400. //*****************************************
  401. //*****  de_bug (Write to debug Log)  ***** // Command 62
  402. //*****************************************
  403.  
  404. VOID DEBUGLOG(TEXT *outstring)
  405. {
  406.  send.Command=62;
  407.  send.text1=outstring;
  408.  DOORIO();
  409. }
  410.  
  411. //******************************************
  412. //*****  User Log (Write to User Log)  ***** // Command 63
  413. //******************************************
  414.  
  415. VOID USERLOG(TEXT *outstring)
  416. {
  417.  send.Command=63;
  418.  send.text1=outstring;
  419.  DOORIO();
  420. }
  421.  
  422. //*****************************************
  423. //*****  FLAG/MARK file for Download  ***** // Command 51
  424. //*****************************************
  425.  
  426. VOID MarkFile(TEXT *flagfile)
  427. {
  428.  send.Command=51;
  429.  send.text1=flagfile);
  430.  DOORIO();
  431. }
  432.  
  433. //*************************
  434. //*****  MORE PROMPT  ***** // Command 72
  435. //*************************
  436.  
  437. int MORE(VOID)
  438. {
  439.  send.Command=72;
  440.  DOORIO();
  441.  return(send.Value1);
  442. }
  443.  
  444. //*******************
  445. //*****  Pause  ***** // Command 71
  446. //*******************
  447.  
  448. int Pause(VOID)
  449. {
  450.  send.Command=71;
  451.  DOORIO();
  452.  return(send.Value1);
  453. }
  454.  
  455. //*****************************
  456. //*****  PL (Print Line)  ***** // Command 1
  457. //*****************************
  458.  
  459. VOID pl(TEXT *string)
  460. {
  461.  send.Command=1;
  462.  send.text1=string;
  463.  DOORIO();
  464. }
  465.  
  466. //*****************************
  467. //*****  PL (Print Line)  ***** // Command 1 with a twist
  468. //*****************************
  469.  
  470. VOID pl(TEXT *fmt,...)
  471. {
  472.  va_list args;
  473.  TEXT s[255];
  474.  va_start(args,fmt);
  475.  vsprintf(s,fmt,args);
  476.  va_end(args);
  477.  send.Command=1;
  478.  send.text1=&s[0];
  479.  DOORIO();
  480. }
  481.  
  482. //********************
  483. //*****  Random  ***** // Command 75
  484. //********************
  485.  
  486. int Random(int x)
  487. {
  488.  send.Command=75;
  489.  send.Value1=x;
  490.  DOORIO();
  491.  return(send.Value1);
  492. }
  493.  
  494. //***********************
  495. //*****  Set Value  ***** // Command 43
  496. //***********************
  497.  
  498. VOID SetValue(int opt1,int opt)
  499. {
  500.  send.Command=43;
  501.  send.Value2=opt1;
  502.  send.Value1=opt;
  503.  DOORIO();
  504. }
  505.  
  506. //***********************
  507. //*****  Show File  *****  // Command 70
  508. //***********************
  509.  
  510. VOID showfile(TEXT *mstring)
  511. {
  512.  send.Command=70;
  513.  send.text1=mstring;
  514.  DOORIO();
  515. }
  516.  
  517. //***********************
  518. //*****  User Time  ***** // Command 31
  519. //***********************
  520.  
  521. VOID UserTime(int x)
  522. {
  523.  send.Command=31;
  524.  send.Value1=x;
  525.  DOORIO();
  526. }
  527.  
  528. //************************
  529. //*****  Write File  ***** // Command 69
  530. //************************
  531.  
  532. VOID WriteFile(TEXT *ostring,TEXT *mstring)
  533. {
  534.  send.Command=69;
  535.  send.text1=ostring;
  536.  send.text2=mstring;
  537.  DOORIO();
  538. }
  539.  
  540. //*****************************
  541. //*****  Zmodem Download  ***** // Command 52
  542. //*****************************
  543.  
  544. VOID ZmodemDownload(TEXT *mstring)
  545. {
  546.  send.Command=52;
  547.  send.text1=mstring;
  548.  DOORIO();
  549. }
  550.  
  551. //***************************
  552. //*****  Zmodem Upload  ***** // Command 53
  553. //***************************
  554.  
  555. VOID ZUpload(VOID)
  556. {
  557.  send.Command=53;
  558.  DOORIO();
  559. }
  560.